package com.demo.java.OD501_550.OD535;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【数据单元的变量替换(C卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146509272
 */
public class OdMain {
    // 存储单元格内容的数组
    public static String[] cells;

    public static void main(String[] args) throws Exception {
        // 读取输入
        Scanner in = new Scanner(System.in);
        String input_str = in.nextLine();
        cells = input_str.split(",");  // 以逗号分隔，存入单元格数组

        // 遍历每个单元格，检查并更新其值
        for (int i = 0; i < cells.length; i++) {
            if (!change(cells[i], i)) {
                System.out.println(-1);  // 如果处理过程中出现问题，输出-1
                return;
            }
        }

        // 输出修改后的CSV字符串
        for (int i = 0; i < cells.length; i++) {
            System.out.print(cells[i]);
            if (i != cells.length - 1) {
                System.out.print(",");  // 输出逗号分隔的单元格
            }
        }
    }

    // 递归替换单元格中的引用
    public static boolean change(String cur_str, int index) {
        // 查找引用的开始和结束位置
        int result1 = cur_str.indexOf("<");
        int result2 = cur_str.indexOf(">");

        // 如果没有引用，直接返回true
        if (result1 == -1 && result2 == -1) {
            return true;
        } else if (result1 == -1 || result2 == -1) {
            // 如果只有一个符号存在，说明格式错误
            return false;
        } else if (result1 > result2 || result2 - result1 != 2) {
            // 如果<与>的顺序不正确或者格式不对
            return false;
        } else {
            // 获取目标引用的单元格（例如< A >中的A）
            char target_pos = cur_str.substring(result1 + 1, result2).charAt(0);
            // 当前单元格的标识（例如A、B、C）
            char cur_pos = (char) (index + 'A');

            // 如果目标引用不是A到Z之间的字母，或者引用了自身，返回错误
            if (!(target_pos >= 'A' && target_pos <= 'Z')) {
                return false;
            }
            if (cur_pos == target_pos) {
                return false;  // 如果引用了自身，报错
            }

            // 获取目标单元格的索引
            int target_index = target_pos - 'A';

            // 递归处理目标单元格
            if (!change(cells[target_index], target_index)) {
                return false;
            }

            // 替换当前单元格内容
            String temp_result = "";
            temp_result += cur_str.substring(0, result1);
            temp_result += cells[target_index];  // 引用目标单元格内容
            temp_result += cur_str.substring(result2 + 1);
            cells[index] = temp_result;  // 更新当前单元格的内容
        }

        return true;
    }
}